證券簡(jiǎn)稱:天融信 證券代碼:002212
    全天候7x24小時(shí)服務(wù): 400-777-0777

    人工智能安全|AI安全應(yīng)用:基于代碼語(yǔ)義的惡意代碼同源分析

    我們?cè)谇拔腫1]中重點(diǎn)介紹了基于圖像分類的惡意代碼同源分析方法,該方法本質(zhì)上是根據(jù)惡意代碼字節(jié)流內(nèi)容的特征進(jìn)行分類。然而,這種方法從逆向工程的角度來(lái)看不具有可解釋性。

    人工智能安全|AI安全應(yīng)用:基于代碼語(yǔ)義的惡意代碼同源分析

    發(fā)布時(shí)間:2021-11-01
    瀏覽次數(shù):4088
    分享:

    1.引言

    我們?cè)谇拔闹兄攸c(diǎn)介紹了基于圖像分類的惡意代碼同源分析方法,該方法本質(zhì)上是根據(jù)惡意代碼字節(jié)流內(nèi)容的特征進(jìn)行分類。然而,這種方法從逆向工程的角度來(lái)看不具有可解釋性。

    眾所周知,匯編代碼具有較為鮮明的語(yǔ)法可讀性。如果先把惡意代碼進(jìn)行反匯編,然后用自然語(yǔ)言處理(Natural Language Processing)技術(shù)提取代碼語(yǔ)義特征,再進(jìn)行同源分析,這樣的方法就容易解釋,這就是本文將介紹的基于代碼語(yǔ)義的同源分析方法。當(dāng)前,這種方法不僅被用于惡意代碼檢測(cè)領(lǐng)域,還被用在代碼克隆搜索、代碼侵權(quán)判定等領(lǐng)域。

    本文首先介紹了基于代碼語(yǔ)義同源分析的基礎(chǔ)知識(shí);其次介紹了基于代碼語(yǔ)義的同源分析相關(guān)工作;最后,給出了基于代碼語(yǔ)義的同源分析技術(shù)方案設(shè)計(jì),并通過(guò)實(shí)驗(yàn)驗(yàn)證了方案的有效性。

    2.基礎(chǔ)知識(shí)

    基于代碼語(yǔ)義的惡意代碼同源分析的基礎(chǔ)是語(yǔ)義提取。PV-DM和TextCNN是NLP領(lǐng)域有關(guān)代碼語(yǔ)義提取的兩種常見(jiàn)的模型, 說(shuō)明如下:

    (1)句向量的分布式記憶模型(Distributed Memory Model of Paragraph Vectors,PV-DM)

    在PV-DM模型中,詞向量和句向量相拼接,用來(lái)預(yù)測(cè)文本中的下一個(gè)詞,通過(guò)在句子上的窗口滑動(dòng),使句向量記憶句子中所有詞的上下文關(guān)系。在代碼語(yǔ)義提取中使用PV-DM模型,能簡(jiǎn)單有效地解決向量長(zhǎng)度不一致問(wèn)題(圖1).

    圖1 PV-DM模型

    (2)TextCNN模型

    TextCNN通過(guò)拼接詞向量將文本轉(zhuǎn)化成矩陣,然后應(yīng)用卷積神經(jīng)網(wǎng)絡(luò)發(fā)揮深度學(xué)習(xí)的優(yōu)勢(shì)。相比于一般的卷積神經(jīng)網(wǎng)絡(luò)模型,TextCNN在卷積層中應(yīng)用多個(gè)不同尺寸的卷積核(圖2)。TextCNN具有網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單、訓(xùn)練速度快并且效果較好等優(yōu)點(diǎn)。但是,在嵌入層中采用預(yù)訓(xùn)練的詞向量模型(如Word2Vec)進(jìn)行語(yǔ)義提取,因而會(huì)有長(zhǎng)度不一致的問(wèn)題。

    圖2 TextCNN模型

    3.相關(guān)工作

    Zhang等[2]圍繞勒索軟件的家族分類問(wèn)題,提出一種特征提取方法,該方法將樣本指令序列轉(zhuǎn)換為不同n值時(shí)的n-gram集合,計(jì)算每個(gè)n-gram的TF-IDF(term frequency–inverse document frequency)并選擇家族中TF-IDF值較高的t個(gè)n-gram作為特征。然而,n-gram特征僅僅反映序列化特征,不能提取代碼文本的語(yǔ)義信息。

    陳等提出一種基于代碼語(yǔ)義的惡意代碼同源判定方法[3],利用Word2Vec獲取指令的詞向量,并利用TextCNN進(jìn)行分類。Fang等人則采用了FastText模型提取JavaScript代碼的詞向量[4],F(xiàn)astText將多個(gè)單詞及其n-gram作為輸入,直接輸出模型判定的類別。

    Ding等提出一種匯編代碼的語(yǔ)義模型-Asm2Vec[5],用于提取指令代碼的語(yǔ)義信息。該方法基于句向量的分布式記憶模型PV-DM設(shè)計(jì),并考慮了匯編代碼格式的適應(yīng)性問(wèn)題。由于控制流程圖能在一定程度上反映代碼的動(dòng)態(tài)順序信息,一些研究工作先構(gòu)建代碼的控制流程圖,再利用圖匹配、圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Network,GNN)等技術(shù)評(píng)估代碼相似性。GNN雖然性能比傳統(tǒng)的圖匹配更好,但在語(yǔ)義學(xué)習(xí)上仍有不足。為此,Yu等提出一種同時(shí)捕捉代碼的語(yǔ)義、結(jié)構(gòu)以及順序的方法[6],利用Bert模型進(jìn)行預(yù)測(cè)訓(xùn)練以獲取語(yǔ)義信息,利用消息傳遞神經(jīng)網(wǎng)絡(luò)(Message Passing NeuralNetwork,MPNN)獲取結(jié)構(gòu)信息,利用Resnet模型提取順序信息。

    4.方案設(shè)計(jì)

    基于代碼語(yǔ)義的同源分析方案主要由語(yǔ)義特征提取和同源分類訓(xùn)練兩大部分構(gòu)成。具體處理流程上,主要包括了如下步驟(圖3)

    第一步:數(shù)據(jù)準(zhǔn)備。收集樣本并標(biāo)注類別,構(gòu)建訓(xùn)練數(shù)據(jù)集;

    第二步:反匯編。對(duì)可移植可執(zhí)行的惡意代碼文件進(jìn)行反匯編,獲得匯編代碼;

    第三步:預(yù)處理。利用NLP技術(shù)對(duì)匯編進(jìn)行分詞、關(guān)鍵詞篩選等預(yù)處理;

    第四步:語(yǔ)義提取。構(gòu)建語(yǔ)義模型,使用訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,并提取出每個(gè)樣本的語(yǔ)義特征。本文使用了PV-DM以及TextCNN中的Word2Vec作為語(yǔ)義提取模型。

    第五步:同源分類。根據(jù)語(yǔ)義特征,采用相似性度量或聚類/分類算法分析同源性。本文使用了DNN、KMeans聚類、CNN等技術(shù)。

    圖3 基于代碼語(yǔ)義的同源分析流程

    5.實(shí)驗(yàn)分析

    本節(jié)通過(guò)實(shí)驗(yàn)驗(yàn)證兩種基于代碼語(yǔ)義模型的同源分析方法。實(shí)驗(yàn)所用樣本來(lái)源于網(wǎng)絡(luò),包括Application、Backdoor、Generic、Trojan、Variant、Virus及Worm等類別(表1)。

    表1. 實(shí)驗(yàn)數(shù)據(jù)集

    實(shí)驗(yàn)一:基于PV-DM模型的同源分析

    圖4為PV-DM語(yǔ)義模型的訓(xùn)練過(guò)程。提取出256維的語(yǔ)義向量,應(yīng)用神經(jīng)網(wǎng)絡(luò)進(jìn)行分類,按照比例4:1劃分訓(xùn)練集和測(cè)試集,總體準(zhǔn)確率為0.74。另外,對(duì)提取的語(yǔ)義特征采用KMeans算法進(jìn)行了聚類,測(cè)試準(zhǔn)確率同樣是0.74。

    圖4 基于 PV-DM的DNN模型訓(xùn)練及測(cè)試

    圖5 基于PV-DM的KMeans聚類(Accuracy=0.74)

    實(shí)驗(yàn)二:基于TextCNN的同源分析

    圖6為樣本中指令數(shù)量的統(tǒng)計(jì),平均指令數(shù)量為28,最小為1(195個(gè)樣本),最大為74(1個(gè)樣本)。構(gòu)建TextCNN模型,設(shè)置不同大小的一維卷積核,將特征圖最大池化并拼接,將數(shù)據(jù)集按照比例4:1劃分為訓(xùn)練集和驗(yàn)證集,如圖7所示,測(cè)試準(zhǔn)確率為0.65左右。

    圖6 指令數(shù)量統(tǒng)計(jì)

    圖7 TextCNN訓(xùn)練及測(cè)試

    6.總結(jié)

    本文通過(guò)實(shí)驗(yàn)證明了基于代碼語(yǔ)義的惡意代碼同源分析方法具備一定的可行性。然而,PV-DM、TextCNN方法直接應(yīng)用于提取匯編代碼語(yǔ)義時(shí),完全將匯編代碼類比成純文本,語(yǔ)義提取的準(zhǔn)確性略低。文獻(xiàn)[5]是針對(duì)匯編代碼而設(shè)計(jì)的語(yǔ)義提取方法,能夠更加精確地提取語(yǔ)義信息,后續(xù)將圍繞此方法作進(jìn)一步研究。

    參考文獻(xiàn)

    [1]智能安全研究組 人工智能安全|AI安全應(yīng)用|基于圖像分類的同源分析. 2021.10.15

    [2]Hanqi Zhang, Xi Xiao.Classification of ransome families with machine learning based on N-gram ofopcodes[J]. Future generation computer system, 2019(90):211-221.

    [3]陳涵泊,吳越,鄒福泰 . 基于 Asm2Vec 的惡意代碼同源判定方法 [J]. 通信技術(shù) ,2019,52(12):3010-3015.

    [4]Yong Fang, Cheng Huang.Detecting malicious JavaScript code based on semantic analysis[J].Computer&Security, 2020(93):1-9.

    [5]Steven H H Ding, Benjamin C MFung. Asm2Vec: Boosting Static Representation Robustness for Binary CloneSearch against Code Obfuscation and Compiler Optimization[C]. S&P,2019:1-18.

    [6]Zeping Yu, Rui Cao, Qiyi Tang,et al. Order Matters:Semantic-Aware Neural Networks forBinary Code Similarity Detection[C]. AAAI, 2020:1-8.

    版權(quán)聲明

    轉(zhuǎn)載請(qǐng)務(wù)必注明出處。

    版權(quán)所有,違者必究。

    關(guān)鍵詞標(biāo)簽:
    天融信 人工智能安全 AI安全應(yīng)用
    客戶服務(wù)熱線

    400-777-0777
    7*24小時(shí)服務(wù)

    聯(lián)系郵箱

    servicing@topsec.com.cn

    掃碼關(guān)注